#include "HiranipraShared.h"

#include "HCM/IComponent.h"

#ifndef _SHARED_PLATFORM_GRAPHICS_ITEXTURE_H_
#define _SHARED_PLATFORM_GRAPHICS_ITEXTURE_H_

namespace Hiranipra {
	namespace Platform {
		namespace Graphics {

			enum PixelFormat
			{
				PixelFormatA8,
				PixelFormatR5G5B5X1,
				PixelFormatB5G5R5X1,
				PixelFormatR5G6B5,
				PixelFormatB5G6R5,
				PixelFormatR5G5B5A1,
				PixelFormatB5G5R5A1,
				PixelFormatR4G4B4A4,
				PixelFormatB4G4R4A4,
				PixelFormatR8G8B8,
				PixelFormatB8G8R8,
				PixelFormatR8G8B8X8,
				PixelFormatB8G8R8X8,
				PixelFormatR8G8B8A8,
				PixelFormatB8G8R8A8,
				PixelFormatR16G16B16A16,
				PixelFormatDXT1,
				PixelFormatDXT3,
				PixelFormatDXT5,
				PixelFormatR16F,
				PixelFormatR16G16F,
				PixelFormatR16G16B16A16F,
				PixelFormatR32F,
				PixelFormatR32G32F,
				PixelFormatR32G32B32A32F,
			};

			class ITexture : implements IBuffer
			{
			public:
				ITexture( const BufferFlags flags, uint32 elementCount, uint32 elementSize ) :
					IBuffer( flags, elementCount, elementSize )
				{
				}
				virtual ~ITexture(){}

				virtual uint32 GetWidth() const = 0;
				virtual uint32 GetHeight() const = 0;
				virtual PixelFormat GetPixelFormat() const = 0;
			};

		}
	}
}

#endif // _SHARED_PLATFORM_GRAPHICS_ITEXTURE_H_
